package com.xnj.file_byte_stream_demo;

import java.io.FileInputStream;
import java.io.IOException;

// 使用FileInputStream从内存中读取文件,每次读取一个字节
public class FileInputStreamTest1 {
    public static void main(String[] args) throws IOException {
        // 1. 两种输入流构造方法
        // 方式一：
//        File file = new File("src/aa.txt"); // 该文件内容为: ab
//        FileInputStream is = new FileInputStream(file);

        // 方式二：推荐
        FileInputStream is = new FileInputStream("src/aa.txt");

        // 2. 读取文件内容
        // public int read() 每次读取一个字节，文件指针后移一位,没有数据返回-1
        // 2.1 不推荐写法，用于了解
//        int read1 = is.read();
//        System.out.println((char)read1); // a
//
//        int read2 = is.read(); // b
//        System.out.println((char)read2);
//
//        int read3 = is.read(); // -1
//        System.out.println(read3);

        // 2.2 使用循环改改良2.1
        int b; // 用于记录当前读取的字节
        while((b = is.read())!= -1){
            System.out.print((char) b);
        }

        /*
        在上面2.2的读取性能是很差的,
        且读取汉字还会乱码,因为每次只读取一个字节，而汉字是两个字节(gbk)或三个字节（utf-8）
        流使用完后必须关闭，释放系统资源
         */

        is.close();
    }
}
